package word.attribute;

import org.json.simple.JSONObject;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.filechooser.FileNameExtensionFilter;

/**
 * 이미지 속성
 */
public class ImageAttribute implements AdditionalAttribute
{
	static
	{
		AttributeList.addAttribute(new ImageAttribute(null));
	}

	private String imagePath; // 이미지 경로
	private Icon   image;     // 이미지

	/**
	 * 생성자
	 * @param path
	 */
	public ImageAttribute(String path)
	{
		if (path != null)
		{
			imagePath = path;
			image = new ImageIcon(imagePath);
		}
	}

	@Override
	public JPanel toPanel()
	{
		JPanel panel = new JPanel();
		panel.setOpaque(false);
		panel.add(new JLabel(image));
		return panel;
	}

	@Override
	public AdditionalAttribute createAttributeByDialog(JFrame owner)
	{
		JFileChooser chooser = new JFileChooser();
		chooser.setFileFilter(new FileNameExtensionFilter("이미지 파일 (*.png, *.jpg, *.bmp, *.gif)", "png", "jpg", "bmp", "gif"));
		chooser.setMultiSelectionEnabled(false);

		// 파일열기 대화상자를 열고 열기버튼을 눌렀으면
		if (chooser.showOpenDialog(owner) == JFileChooser.APPROVE_OPTION)
		{
			// 사용자가 선택한 파일명 가져오고
			String filePath = chooser.getSelectedFile().getPath();
			return new ImageAttribute(filePath);
		}
		else
			return null;
	}

	@Override
	public String getName()
	{
		return "[이미지]";
	}

	@Override
	public JSONObject toJsonObject()
	{
		JSONObject object = new JSONObject();
		object.put("image", imagePath);
		return object;
	}

	@Override
	public AdditionalAttribute createAttributeByJSON(JSONObject object)
	{
		String path = (String) object.get("image");
		return new ImageAttribute(path);
	}
}